home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 010 / blit.arc / SEIRP.C < prev    next >
Encoding:
C/C++ Source or Header  |  1985-06-10  |  1.4 KB  |  62 lines

  1. /*
  2.  * NAME:         SIERPINSKI
  3.  *
  4.  *  DESCRIPTION: CONTROL ROUTINE FOR DRAWING SIERPINSKI CURVES.
  5.  *
  6.  * SYNOPSIS:     SIERPINSKI (DEPTH, GRID)
  7.  *              INT      DEPTH;
  8.  *              INT      GRID;
  9.  *
  10.  * GLOBALS:      NONE.
  11.  *
  12.  * CALLS:        A        (SIERPINSKI.C)
  13.  *              DO_PLOT   (SIERPINSKI.C)
  14.  *              B         (SIERPINSKI.C)
  15.  *              C         (SIERPINSKI.C)
  16.  *              D         (SIERPINSKI.C)
  17.  *
  18.  * CALLED BY:    TEST  (TEST.C)
  19.  */
  20.  
  21. #INCLUDE "LAYERS.H"
  22.  
  23. STRUCT LAYER  *DRAWP;
  24.  
  25. SIERPINSKI (DEPTH, GRID)
  26. INT    DEPTH;                          /* DRAW SIERPINSKI CURVES OF ORDERS 1 TO
  27.                                          DEPTH */
  28. INT    GRID;                           /* SIZE TO DRAW THEM */
  29. {
  30.    STRUCT POINT     HOME;
  31.    STRUCT POINT     OLD;
  32.    STRUCT POINT     CUR;
  33.    INT      I;
  34.    INT      H;
  35.  
  36.    H = GRID / 4;
  37.    HOME.X = 2 * H;
  38.    HOME.Y = 3 * H;
  39.    FOR (I = 1; I <= DEPTH; I++) {
  40.        HOME.X -= H;
  41.        H = H / 2;
  42.        HOME.Y += H;
  43.        CUR = OLD = HOME;
  44.        A (I, H, &OLD, &CUR);
  45.        CUR.X += H;
  46.        CUR.Y -= H;
  47.        DO_PLOT (&OLD, &CUR);
  48.        B (I, H, &OLD, &CUR);
  49.        CUR.X -= H;
  50.        CUR.Y -= H;
  51.        DO_PLOT (&OLD, &CUR);
  52.        C (I, H, &OLD, &CUR);
  53.        CUR.X -= H;
  54.        CUR.Y += H;
  55.        DO_PLOT (&OLD, &CUR);
  56.        D (I, H, &OLD, &CUR);
  57.        CUR.X += H;
  58.        CUR.Y += H;
  59.        DO_PLOT (&OLD, &CUR);
  60.    }
  61. }
  62.